home *** CD-ROM | disk | FTP | other *** search
- #!/bin/sh
- #
- # helper to check if we actually have a ubuntu CD
- #
- # Returncode:
- # 0 - no ubuntu CD
- # 1 - CD with packages
- # 2 - dist-upgrader CD
- # 3 - addon CD
- # 4 - aptoncd media
- # (if the returncodes change, make sure to update src/hal.c)
- #
-
- mount_point="$1"
- upgrader_dir="$mount_point/dists/stable/main/dist-upgrader/binary-all/"
- addon_dir="$mount_point/app-install/"
- aptoncd_file="$mount_point/aptoncd.info"
-
- # sanity checks
- if [ -z "$mount_point" ]; then
- exit 0
- fi
-
- if [ -f "$aptoncd_file" ]; then
- exit 4
- fi
-
- if [ ! -d "$mount_point/ubuntu" ]; then
- exit 0
- fi
-
- # check if there are "Packages" files on the cd (and ignore the
- # debian-installer dir)
- find "$mount_point/dists/" -name "Packages.gz" | grep -q -v debian-installer
-
- # 1 means "no lines where selected" in grep (no Packages file but the
- # debian-installer ones)
- if [ $? -eq 1 ]; then
- exit 0
- fi
-
- # get some apt-config vars
- label_start=0
- cdrom_id=""
-
- apt_dir="/"
- apt_state_dir="var/lib/apt/"
- apt_cdrom_list="cdrom.list"
- eval $(apt-config shell apt_dir Dir \
- apt_state_dir Dir::State \
- apt_cdrom_list Dir::State::cdroms)
-
-
-
- # identifying ... [afkdsjaf] line
- line=$(apt-cdrom -d="$1" -m ident|grep "\[.*\]")
-
- # remove the stuff before "Identifiyng... [dasjflkd]" -> "dasjflkd"
- line=${line%]*}
- cdrom_id=${line#*\[}
-
- if [ -z "$cdrom_id" ]; then
- # something bad happend here, we return "not yet scanned" as
- # fallback (because we are cheap)
- return 1
- fi
-
- # we always return ADDON cd regardless if we know it already or not
- # the rational is that it easier for people this way and less
- # confusing
- if [ -d "$addon_dir" ] && [ -x /usr/bin/gnome-app-install ]; then
- exit 3
- fi
-
- # [cdrom-id] -> cdrom-id
- if grep -s -q "$cdrom_id" $apt_dir$apt_state_dir$apt_cdrom_list; then
- # already in sources.list, ignore
- exit 0
- fi
-
- # so this is a CD we don't know yet and it has packages. good!
-
- # now check if it contains a signed dist-upgrader
- if [ -d "$upgrader_dir" ]; then
- # ok, we have one, now check the authentication
- GPG="gpgv --ignore-time-conflict --keyring /etc/apt/trusted.gpg"
- if $GPG "$upgrader_dir"/*.tar.gz.gpg "$upgrader_dir"/*.tar.gz; then
- # verified ok, we have a valid upgrader, if it was not ok, the
- # fallback to the end is ok because we still have packages on it
- exit 2
- fi
- fi
-
- # we got a ubuntu CD with packages
- exit 1
-